home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / dsp / dr.bub / 96000.lha / 96000 / appb / b133d.asm < prev    next >
Assembly Source File  |  1992-04-28  |  4KB  |  70 lines

  1. ; This program was originally published in the Motorola DSP96002 Users Manual
  2. ; and is provided under a DISCLAIMER OF WARRANTY available from Motorola DSP
  3. ; Operation, 6501 William Cannon Drive West, Austin, Texas 78735-8598.  For
  4. ; more information, refer to the DSP96002 Users Manual, Appendix B, DSP
  5. ; Benchmarks.
  6. ;
  7. ; B.1.33.4    Four Point Polygon Accept/Reject  
  8. ;This determines if the polygon consisting of the points (x0,y0,z0),  (x1,y1,z1), (x2,y2,z2), 
  9. ;(x3,y3,z3) is within a three-dimensional view  cube.  If the polygon is within the cube, the A (accept) 
  10. ;bit of the CCR  will be set.  If the polygon is entirely outside of the cube, then the R  bit will be 
  11. ;cleared.  If the polygon can not be accepted or  rejected, then further processing is required to clip 
  12. ;the polygon.  
  13. ;Registers: 
  14. ;   d0 = dimension  d4 = unused 
  15. ;   d1 = limit           d5 = unused 
  16. ;   d2 = unused      d6 = unused 
  17. ;   d3 = unused      d7 = unused 
  18. ;
  19. ;Memory Map: 
  20. ;                        X Memory          Y Memory 
  21. ;  (n0=3)  r0 ?   x0         Xmin  ? r4 
  22. ;                y0         Xmax 
  23. ;                z0         Ymin 
  24. ;                x1         Ymax 
  25. ;                y1         Zmin 
  26. ;                z1         Zmax 
  27. ;                x2 
  28. ;                y2 
  29. ;                z2 
  30. ;                x3 
  31. ;                y3 
  32. ;                z3 
  33. ;
  34. ;                   Polygon Accept/Reject 
  35. ;                                                            Program    ICycles 
  36. ;                                                              Words 
  37.   ori   #$e0,ccr          ;set accept/reject/overflow bits   1     1 
  38.   move         x:(r0)+n0,d0.s y:(r4)+,d1.s ;get x0,Xmin      1     1 
  39.  
  40.   fcmp  d1,d0  x:(r0)+n0,d0.s              ;x0-Xmin, get x1  1     1 
  41.   fcmp  d1,d0  x:(r0)+n0,d0.s              ;x1-Xmin, get x2  1     1 
  42.   fcmp  d1,d0  x:(r0)-n0,d0.s              ;x2-Xmin, get x3  1     1 
  43.   fcmpg d1,d0                 y:(r4)+,d1.s ;x3-Xmin, Xmax    1     1 
  44.   fcmp  d0,d1  x:(r0)-n0,d0.s              ;Xmax-x3, get x2  1     1 
  45.   fcmp  d0,d1  x:(r0)-n0,d0.s              ;Xmax-x2, get x1  1     1 
  46.   fcmp  d0,d1  x:(r0)+,d0.s                ;Xmax-x1, get x0  1     1 
  47.   fcmpg d0,d1  x:(r0)+n0,d0.s y:(r4)+,d1.s ;Xmax-x0, y0,Ymin 1     1 
  48.  
  49.   fcmp  d1,d0  x:(r0)+n0,d0.s              ;y0-Ymin, get y1  1     1 
  50.   fcmp  d1,d0  x:(r0)+n0,d0.s              ;y1-Ymin, get y2  1     1 
  51.   fcmp  d1,d0  x:(r0)-n0,d0.s              ;y2-Ymin, get y3  1     1 
  52.   fcmpg d1,d0                 y:(r4)+,d1.s ;y3-Ymin, ymax    1     1 
  53.   fcmp  d0,d1  x:(r0)-n0,d0.s              ;Ymax-y3, get y2  1     1 
  54.   fcmp  d0,d1  x:(r0)-n0,d0.s              ;Ymax-y2, get y1  1     1 
  55.   fcmp  d0,d1  x:(r0)+,d0.s                ;Ymax-y1, get y0  1     1 
  56.   fcmpg d0,d1  x:(r0)+n0,d0.s y:(r4)+,d1.s ;Ymax-y0, z0,Zmin 1     1 
  57.  
  58.   fcmp  d1,d0  x:(r0)+n0,d0.s              ;z0-Zmin, get z1  1     1 
  59.   fcmp  d1,d0  x:(r0)+n0,d0.s              ;z1-Zmin, get z2  1     1 
  60.   fcmp  d1,d0  x:(r0)-n0,d0.s              ;z2-Zmin, get z3  1     1 
  61.   fcmpg d1,d0                 y:(r4)+,d1.s ;z3-Zmin, Zmax    1     1 
  62.   fcmp  d0,d1  x:(r0)-n0,d0.s              ;Zmax-z3, get z2  1     1 
  63.   fcmp  d0,d1  x:(r0)-n0,d0.s              ;Zmax-z2, get z1  1     1 
  64.   fcmp  d0,d1  x:(r0)+,d0.s                ;Zmax-z1, get z0  1     1 
  65.   fcmpg d0,d1                              ;Zmax-z0          1     1 
  66. ;                                                                   ---   --- 
  67. ;                                                   Totals:  26    26 
  68.  
  69. ;If the A bit is set, the polygon can be accepted, if the R bit is  cleared, the polygon can be rejected.  
  70.